<template>
    <div class="wrapper">
        <v-head></v-head>
        <v-sidebar></v-sidebar>
        <div class="content-box" :class="{'content-collapse':collapse}">
            <v-tags></v-tags>
            <div class="content">
                <transition name="move" mode="out-in">
                    <keep-alive :include="tagsList">
                        <router-view></router-view>
                    </keep-alive>
                </transition>
            </div>
        </div>
    </div>
</template>

<script>
    import vHead from './Header.vue';
    import vSidebar from './Sidebar.vue';
    import vTags from './Tags.vue';
    import bus from './bus';

    export default {
        data() {
            return {
                tagsList: [],
                collapse: false
            }
        },
        components: {
            vHead, vSidebar, vTags
        },
        created() {
            bus.$on('collapse', msg => {
                this.collapse = msg;
            })

            // 只有在标签页列表里的页面才使用keep-alive，即关闭标签之后就不保存到内存中了。
            bus.$on('tags', msg => {
                let arr = [];
                for (let i = 0, len = msg.length; i < len; i++) {
                    msg[i].name && arr.push(msg[i].name);
                }
                this.tagsList = arr;
            })

            //30分钟不操作提醒会话失效
            let timeOut = 29 * 60 * 1000; //设置超时时间： 30分
            let currentTime;
            let lastTime = new Date().getTime();
            let self = this
            let timeInterval = window.setInterval(function () {
                currentTime = new Date().getTime(); //更新当前时间
                if (currentTime - lastTime > timeOut) { //判断是否超时
                    self.$confirm('会话已失效请重新登录', '会话失效提醒', {
                        confirmButtonText: '确定',
                        type: 'warning',
                        center: true,
                        closeOnClickModal: false,
                        showClose: false,
                        showCancelButton: false
                    }).then(() => {
                        window.clearInterval(timeInterval);
                        sessionStorage.removeItem('ms_username')
                        window.location.href = "/"
                    }).catch(() => {

                    });

                }
            }, 1000);

            document.onmousemove = document.onkeydown = function () {
                //更新操作时间
                lastTime = new Date().getTime();
            }
        }
    }
</script>
